Technische Informationen zur Anpassung

Wer sollte diesen Abschnitt lesen?

Dieser Abschnitt beschreibt technische Details zu ImageQuery, die für weitergehende Anpassungen gedacht sind. Die Informationen in diesem Abschnitt sind für fortgeschrittene Benutzer oder Administratoren gedacht. Endanwender werden diesen Abschnitt eher langweilig finden.

Wo legt ImageQuery Dateien ab?

ImageQuery benötigt keinen Schreibzugriff auf das Programmverzeichnis. Alle benutzerspezifischen Anpassungen erfolgen in der Registry unter dem Wurzelschlüssel HKEY_CURRENT_USER oder unterhalb des Ordners für Anwendungsdaten des  aktuellen Benutzers, der durch die Umgebungsvariable APPDATA festgelegt wird.

Dateien im Anwendungsordner

Falls die Umgebungsvariable APPDATA nicht auf einen gültigen Pfad zeigt (an den dann „\Midnight!Software\ImageQuery“) angehängt wird, werden die hier aufgelisteten Dateien weder gelesen noch geschrieben. Die Funktionalität für den Abfragepuffer und die Ergebnisaktionen steht dann nicht zur Verfügung.

ResultActions.ini

Diese Datei enthält die Definitionen für benutzerdefinierte Ergebnisaktionen. Das Format der Datei ist das einer normalen INI-Datei. Jeder Abschnitt definiert eine Aktion. Hier ein Beispiel:

[Action42]

Menu=IrfanView

Program=C:\Programme\IrfanView\i_view32.exe

CmdLine=$filename

Shortcut=ALT+I

Ein Beispiel für die Definition einer Aktion

Der Name des Abschnitts (hier „Action42“) wird von ImageQuery jeweils dynamisch vergeben und sollte nicht geändert werden. Für die Definition des Tastenkürzels (shortcut) gelten folgende Regeln: erlaubte Umschaltnamen sind CTRL / ALT / SHIFT, danach ein Pluszeichen, danach der Name der Taste (erlaubt sind 0-9 und A-Z). Wird dies nicht eingehalten, kann das Programm unerwartet reagieren.

Querylist.txt

Enthält eine Liste mit Abfragen für den Abfragepuffer. Jede Zeile beginnt mit dem Namen der Abfrage, der dann in der Combobox erscheint. Danach folgt ein Gleichheitszeichen, danach der Text der Abfrage, wobei alle Zeilenschaltungen durch den vertikalen Strich („|“) ersetzt werden. Dies bedeutet natürlich auch, dass in einer Abfrage keine solchen „vertical bars“ vorkommen können. Hier ein Beispiel:

Select Name, Size, Caption|from c:\tmp\*.jpg|where Caption != ''

Ein Beispiel für eine Abfrage im Puffer

Sidetree.ini

Diese Datei enthält benutzerspezifische Inhalte für die Feldliste. Falls diese Datei im Anwendungsdaten-Ordner nicht vorhanden ist, wird nach einer zentralen Datei im Programmordner von ImageQuery gesucht und diese verwendet.

Registry-Werte

ImageQuery legt seine Informationen unter folgendem Schlüssel in der Registrierung ab:

HKEY_CURRENT_USER\Software\Midnight!Software\ImageQuery\1.0

Folgende Werte sind derzeit vorhanden und können auch z.B. über Gruppenrichtlinien gesetzt werden:

LastQuery

REG_SZ

Der Text der jeweils letzten Query

ThumbnailWidth

REG_DWORD

Breite der Vorschaubilder in Pixel (sollte 160, 120 oder 90 sein)

ThumbnailHeight

REG_DWORD

Höhe der Vorschaubilder in Pixel (sollte 120, 90 oder 66 sein)

GeneratePreview

REG_DWORD

1 = Vorschau erzeugen, falls kein EXIF-Thumbnail (Vorsicht, sehr langsam)

UseNullText

REG_DWORD

1 = Den Inhalt von NullText verwenden

NullText

REG_SZ

Ersatztext für Nullwerte (nicht vorhandene Metadatenfelder)

DontAskOnExit

REG_DWORD

1 = Beim Beenden nicht nachfragen

RefinementLimit

REG_DWORD

Anzahl der maximalen Treffer, bevor eine Abfrage abgebrochen wird, falls EnforceRefinement auf 1 gesetzt wurde

EnforceRefinement

REG_DWORD

1 = Abfragebegrenzung aktiv (s. RefinementLimit)

QueryFontFace

REG_SZ

Schriftartname

QueryFontSize

REG_DWORD

Schriftartgöße

ResultFontFace

REG_SZ

Schriftartname

ResultFontSize

REG_DWORD

Schriftartgröße

ResultViewStyle
(neu ab 1.1)

REG_SZ

Detail = Spaltendarstellung
List = Liste
Preview = Vorschaubilder

Liste der Werte in der Registry

Sonstige Informationen

Hier finden Sie weitere Informationen zur internen Arbeitsweise von ImageQuery. Da ich die interne Dokumentation und die Codekommentare alle in Englisch schreibe, sind die hier eingefügten Kopien ebenfalls Englisch. Da es sich um technische Internas handelt, gehe ich einfach davon aus, dass alle, die mit dieser Information etwas anfangen könnten, auch Englisch können. :-)

Localizing ImageQuery

ImageQuery can be localized for other languages. In contrast to other freeware apps, you can also adjust layout and sizing of controls to make the text fit into place. All language files hasve to be stored in a subfolder under the ImageQuery application folder. This folder has to be named “Lang”.

Language files are simple text files with an INI-file layout. The section names define the forms, while key name specify controls on a form. Names are self-explanatory. Additionally you may want to check the German and English localization file. The language file has to be named according to the short country codes for Windows locales plus the extension “.lng” (e.g. en-us.lng for English, es-es.lng for spanish-Spain, but ca.lng for Catalan or el.lng for Greek).

You can have comments in the file. All lines starting with a semi-colon “;” are considered comments and ignored.

Languages may be changed at run-time without problem. You may start the program with a given locale by providing the command line option /lcid:<code>, where <code> is the LCID number for a given language in decimal, e.g. 1031 for de-de (German-Germany) or 1033 for en-us (English-United States).

The author would like to receive a copy of you translation file to provide it for download to other users. You can of course provide a comment section in the beginning of the file stating your name and eMail-Adress and/or web link to show that you did all the work.

Test for valid jpg files

ImageQuery tries to detect if a file really is a JPEG image before processing it. This will prevent program crashes (if you accidentally use a file mask like *.doc) and allows you to use different extensions or file masks (like *.jp*). To qualify for a valid JPEG image,

•              the files has to start with 0xFF, 0xD8.

•              the JFIF segment marker 0xFF, 0xE0 must be found.

•              the Image data marker 0xFF, 0xDB must be found.

Note: the specifications avialabe do state that every valid JPG or DCF (digital camera format) file has to end with the end marker sequence 0xFF, 0xD9 as the last two bytes. While the majority of image files I encountered during testing follwed that rule, a remarkable number of files did not. Instead they padded the file after the end marker to some border (mostly the next 256 byte). Therefore I decided not to test for the end marker, as you may miss some image files during searching. Any comments or additional information on that subject would be appreciated.